//
//  XFlowerListViewModel.swift
//  WeiBoReDo
//
//  Created by 放学跟鸽走 on 2017/4/18.
//  Copyright © 2017年 放学跟鸽走. All rights reserved.
//

import Foundation

class XFlowerListViewModel {
    lazy var modelList:[XFlowerViewModel] = [XFlowerViewModel]()
    
    /// 默认上次
    var lastPageIndex:Int = 1
    
    func getFlowerList(isPull:Bool=false,complete:@escaping (_ isSuccess:Bool)->()){
        
        //判断是否是上拉刷新
        var page = 1
        if isPull{
            //是上拉刷新，将上次的页码加1赋值给本次请求参数page
            page = lastPageIndex + 1
        }

        XNetworkManager.shared.getFlowerList(page: page) { (page,array, isSuccess) in
            if isSuccess{
                //记录页码
                self.lastPageIndex = page
                /// 定义临时存储视图模型的数组
                var tempList:[XFlowerViewModel] = [XFlowerViewModel]()
                //遍历数组
                for dic in array ?? []{
                    //字典转模型
                    guard let news = XFlower.yy_model(with: dic)
                        else{
                            print("转模型失败\(dic)")
                            continue
                    }
                    //实例化数组
                    let viewModel:XFlowerViewModel = XFlowerViewModel(model: news)
                    //添加到临时数组
                    tempList.append(viewModel)
                }
                //判断数组有没有数据
                if  tempList.count > 0 {
                    //有数据
                    
                    //判断是否是上拉刷新，然后对视图模型数组进行处理
                    if isPull {
                        //是上拉刷新，直接添加到后面
                        self.modelList = self.modelList + tempList
                    }else{
                        //是下拉刷新，目前的处理是直接赋值，而不是添加到前面
                        //FIXME:下拉刷新数组进行处理，希望之后能将没有变化的数组不更新，有变化的将新数据添加到头部
                        self.modelList = tempList
                    }
                    if tempList.count > 0{
                        complete(true)
//                        self.cacheSingleImage(list: tempList, finished: complete)
                        
                    }else{
                        
                        complete(false)
                    }
                    
                }else{
                    //没有数据
                    complete(false)
                }
            }else{
                //失败
                complete(false)
            }
            
        }
    }
}
